home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-11-09 | 2.8 KB | 120 lines | [TEXT/KAHL] |
- /******************************************************************************
- CDRVRBrowser.c
-
- This is a subclass of CResBrowser that creates a TCL dialog
- when the user double-clicks on a DRVR resource.
-
- SUPERCLASS = CResBrowser
-
- Copyright © 1991 Symantec Corporation. All rights reserved.
-
-
- ******************************************************************************/
-
- #include <Global.h>
- #include <CApplication.h>
- #include <CDesktop.h>
- #include <CDecorator.h>
- #include "CResListPane.h"
- #include "CDRVRBrowser.h"
- #include "CDRVRDirector.h"
-
- extern CDesktop *gDesktop;
- extern CApplication *gApplication;
- extern CDecorator *gDecorator;
-
- /******************************************************************************
- IDRVRBrowser
-
- Initialize the CDRVRBrowser. No special initialization is needed, so
- we just call the superclass's initialization method.
-
- ******************************************************************************/
-
- void CDRVRBrowser::IDRVRBrowser( CBrowseResDoc *aSupervisor, CArray *aResList)
- {
- CResBrowser::IResBrowser( aSupervisor, 'DRVR', aResList);
- }
-
- /******************************************************************************
- MakeResourceWindow
-
- Make resource window is called to make a window for an individual resource.
- We know the resource type is 'DRVR', so we make a TCL dialog window.
- ******************************************************************************/
-
- CDirector *CDRVRBrowser::MakeResourceWindow( tResourceInfo *aResource)
- {
- CDRVRDirector *dialog = NULL;
- short savedRes = CurResFile();
-
- TRY
- {
- dialog = new( CDRVRDirector);
-
- UseResFile( HomeResFile( aResource->resource));
- dialog->IDRVRDirector( aResource->ID, this);
-
- dialog->BeginDialog();
- }
- CATCH
- {
- UseResFile( savedRes);
- ForgetObject( dialog);
- }
- ENDTRY;
-
- UseResFile( savedRes);
-
- return dialog;
- }
-
- void CDRVRBrowser::BuildWindow( void)
- {
- inherited::BuildWindow();
-
- itsResPane->SetSelectionFlags( 0 );
- }
-
- #define cmdOpenResource 1051 // open window on a resource
-
- Boolean CDRVRBrowser::GetSelect(Boolean mode, Cell *selected, tResourceInfo *info)
- {
- Boolean res = itsResPane->GetSelect(mode, selected);
- if (res)
- itsResList->GetItem( info, ++(selected->v));
- return res;
- }
-
- void CDRVRBrowser::DoCommand( long aCommand)
- {
- tResourceInfo resInfo;
- Cell selectedCell;
-
- switch( aCommand)
- {
- case cmdOpenResource:
-
- // determine the selected cells
-
- selectedCell.h = selectedCell.v = 0;
- while (GetSelect( kCurrentOrNext, &selectedCell, &resInfo))
- {
- if (resInfo.window)
- resInfo.window->GetWindow()->Select();
- else
- {
-
- resInfo.window = MakeResourceWindow( &resInfo);
- gDecorator->StaggerWindow( resInfo.window->GetWindow() );
- itsResList->SetItem( &resInfo, selectedCell.v);
- }
- }
- break;
-
- default:
- inherited::DoCommand( aCommand);
- break;
- }
- }
-